package top.jiangqiang.qianyi.common.properties;

import lombok.Data;
import org.dromara.hutool.crypto.Mode;
import org.dromara.hutool.crypto.Padding;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import top.jiangqiang.qianyi.common.constants.GlobalConstants;

@Configuration
@ConfigurationProperties(prefix = GlobalConstants.GLOBAL_PREFIX + ".crypto")
@Data
public class CryptoProperties {
    /**
     * aes配置
     */
    private AESConfig aes;
    /**
     * rsa配置
     */
    private RSAConfig rsa;

    @Data
    public static class AESConfig {
        /**
         * 对称加密使用的密钥，base64编码
         */
        private String aesPassword;
        /**
         * 模式
         */
        private Mode mode = Mode.GCM;
        /**
         * 补码方式
         */
        private Padding padding = Padding.NoPadding;
        /**
         * 对称加密使用的偏移量，base64编码
         */
        private String iv;
    }

    @Data
    public static class RSAConfig {
        /**
         * 非对称加密使用的私钥，base64编码
         */
        private String privateKey;
        /**
         * 非对称加密使用的公钥，base64编码
         */
        private String publicKey;
    }
}
